#pragma once

#include "ConsolePrerequisites.h"
#include "LexicalCast.h"

class CArgumentList
{
public:
	template<typename CAST_TYPE>
	const CAST_TYPE			GetArgument( size_t iIndex ) const;
	size_t					GetSize() const							{ return m_Arguments.size(); }
	const csString &		operator[]( size_t iIndex ) const		{ return m_Arguments[iIndex]; }
	
private:
	std::vector<csString>	m_Arguments;
	friend class CConsoleSystem;

};



template<typename CAST_TYPE>
inline const CAST_TYPE CArgumentList::GetArgument( size_t iIndex ) const
{
	return LexicalCast<CAST_TYPE>( m_Arguments[iIndex] );
}

